perm filename DRIVE[AI,JMC] blob sn#005448 filedate 1971-08-13 generic text, type T, neo UTF8
00100	STPT:	CALLI
00600		SETZM TIMR#
00700		SETZM CNTR#
00800		MOVE P,[XWD -2000,PDL1]
00900		PUSHJ P,NXTSET
00905		PUSHJ P,SETBTB
00920		INIT 17,15
00930		SIXBIT /DIS/
00940		0
00950		CALLI 12
00960		OUTPUT 17,COM
01000	INIT:	SETOM LOC
01010		HRLZI 2,-40
01020		MOVE 1,OFBTB(2)
01030		MOVEM 1,@PCTB(2)
01040		AOBJN 2,.-2
01100		MOVE 1,[XWD LOC,LOC+1]
01200		BLT 1,MOVE+3777
01220		MOVNI 1,400
01240		MOVEM 1,BCOUNT
01260		MOVEM 1,WCOUNT
01270		SETZM DEF
01275		MOVE 1,[XWD DEF,DEF+1]
01280		BLT 1,ATT+37
01300	LP:	PUSHJ P,GNCH
01310		CAIN "R"
01320		JRST RMV
01330		CAIN "A"
01340		JRST ADD
01350		CAIN "M"
01360		JRST MV
01370		CAIN "S"
01380		JRST SETIT
01390		CAIN "I"
01400		JRST INIT
01410		CAIN "L"
01420		JRST LOCP
01430		CAIN "O"
01440		JRST OCCP
01450		CAIN "A"
01460		JRST BEARP
01470		CAIN "K"
01480		JRST KDIRP
01490		CAIN "T"
01500		JRST TIMEP
01510		CAIN "P"
01520		JRST MOVEP
01521		CAIN "B"
01522		JRST BLKDO
01523		CAIN "W"
01524		JRST WHTDO
01600		CAIN "F"
01700		JRST FIXIT
01800		JRST LP
     

00100	MV:	PUSHJ P,READ
00200		SKIPGE MOVER,OCC(1)
00250		JRST QMK
00300	JOIN:	PUSHJ P,GNCH
00400		CAIE "-"
00500		JRST .-2
00600		PUSHJ P,READ
00700		MOVE DEST,1
00800		PUSHJ P,CALLER
00900		JRST LP
01000	ADD:	PUSHJ P,READ
01100		SKIPL LOC(1)
01200		JRST QMK
01300		MOVE MOVER,1
01400		JRST JOIN
01500	RMV:	PUSHJ P,READ
01600		SKIPGE MOVER,OCC(1)
01700		JRST QMK
01800		MOVNI DEST,1
01900		PUSHJ P,CALLER
02000		JRST LP
02100	SETIT:	HRLZI 1,-40
02200	SET1:	HRRZ DEST,SETB(1)
02300		HLRZ MOVER,SETB(1)
02400		MOVEM 1,PIEC#
02500		PUSHJ P,CALLER
02600		MOVE 1,PIEC
02700		AOBJN 1,SET1
02800		JRST LP
02900	SETB:	FOO=0
03000		REPEAT 20,<XWD FOO,FOO
03100		FOO=FOO+1>
03200		FOO=20
03300		REPEAT 10,<XWD FOO,FOO+50
03400		FOO=FOO+1>
03500		FOO=30
03600		REPEAT 10,<XWD FOO,FOO+30
03700		FOO=FOO+1>
04000	GNCH:	MOVEI IBUF
04100		CALLI 1
04200		LDB [POINT 7,IBUF,6]
04300		POPJ P,
04500	CALLER:	AOS CNTR
04600		CALLI 1,27
04700		MOVEM 1,THLD#
04800		PUSHJ P,PUTCH
04900		CALLI 1,27
05000		SUB 1,THLD
05100		ADDM 1,TIMR
05200		POPJ P,
05300	QMK:	MOVEI 1,QMS
05400		PUSHJ P,TXTOUT
05600		JRST LP
05700	QMS:	ASCIZ /?
05800	/
     

00100	TXTOUT:	HRLI 1,440700
00200		ILDB 1
00300		JUMPE TXT2
00400		PUSHJ P,OCHR
00500		JRST TXTOUT+1
00700	TXT2:	POPJ P,
00800	OCHR:	SOSG OBUF+2
00900		OUTPUT 1,0
01000		IDPB OBUF+1
01100		POPJ P,
01200	QMT:	ASCIZ /?
01300	/
01400	PDL1:	BLOCK 2001
01450	LOCP:	PUSHJ P,GETLPT
01500		MOVEI 1,LOCM
01600		PUSHJ P,TXTOUT
01700		HRLZI MOVER,-40
01800		MOVEI DEST,20
01900	LPA:	SKIPGE I,LOC(MOVER)
02000		JRST NO1
02100		PUSHJ P,NOUT1
02200		MOVEI " "
02300		PUSHJ P,OCHR
02400	LP1:	SOJLE DEST,CR1
02500		AOBJN MOVER,LPA
02600		PUSHJ P,RELLPT
02700		JRST LP
02800	NO1:	MOVEI 1,NMS
02900		PUSHJ P,TXTOUT
03000		JRST LP1
03100	CR1:	MOVEI 1,CMS
03200		PUSHJ P,TXTOUT
03300		MOVEI DEST,20
03400		JRST LP1+1
03500	CMS:	ASCIZ /
03600	/
03700	NMS:	ASCIZ /-- /
03800	LOCM:	ASCIZ /
03900	LOCATIONS
04000	/
04100	NOUT1:	MOVE I
04200		LSH -3
04300		ADDI "0"
04400		PUSHJ P,OCHR
04500		MOVE I
04600		ANDI 7
04700		ADDI "0"
04800		JRST OCHR
     

00050	OCCP:	PUSHJ P,GETLPT
00100		HRLZI MOVER,-100
00200		MOVEI DEST,10
00210		MOVEI 1,CMS
00220		PUSHJ P,TXTOUT
00300		MOVEI 1,STMS
00400		PUSHJ P,TXTOUT
00500	LP3:	MOVEI "*"
00600		PUSHJ P,OCHR
00700		MOVE 2,OCC(MOVER)
00800		PUSHJ P,PPRNT
00900		SOJLE DEST,CR2
01000	LP5:	AOBJN MOVER,LP3
01200		PUSHJ P,RELLPT
01250		JRST LP
01300	CR2:	MOVEI 1,STCRMS
01400		PUSHJ P,TXTOUT
01500		MOVEI 1,STMS
01600		PUSHJ P,TXTOUT
01700		MOVEI DEST,10
01800		JRST LP5
01900	PPRNT:	JUMPL 2,SPCS
02000		MOVEI "B"
02100		TRZN 2,20
02200		MOVEI "W"
02300		PUSHJ P,OCHR
02400		MOVE LTB(2)
02500		JRST OCHR
02600	SPCS:	MOVEI 1,SPMS
02700		JRST TXTOUT
02800	LTB:	EXP  "R","N","B","Q","K","B","N","R"
02900		REPEAT 10,<EXP "P">
03000	STMS:	ASCIZ /*************************
03100	/
03200	STCRMS:	ASCIZ /*
03300	/
03400	SPMS:	ASCIZ /  /
     

00050	BEARP:	PUSHJ P,GETLPT
00100		MOVEI 1,BMS
00200		PUSHJ P,TXTOUT
00300		SETZM MOVER
00400		MOVEI I,100
00500		MOVEI N,20
00600	LP7:	SKIPGE 2,JBEAR(MOVER)
00700		JRST NO2
00800		PUSHJ P,PPRNT
00900		MOVEI " "
01000		PUSHJ P,OCHR
01100	LP6:	ADDI MOVER,100
01200		SOJG N,LP7
01300		MOVEI 1,CMS
01400		PUSHJ P,TXTOUT
01500		SUBI MOVER,1777
01600		SOJG I,LP7-1
01700		PUSHJ P,RELLPT
01800		JRST LP
01900	NO2:	MOVEI 1,NMS
02000		PUSHJ P,TXTOUT
02100		JRST LP6
02200	BMS:	ASCIZ /
02300	BEARINGS
02400	/
02450	KDIRP:	PUSHJ P,GETLPT
02500		MOVEI 1,KDM1
02600		PUSHJ P,TXTOUT
02650		MOVEI K,7
02700		HRLZI MOVER,-100
02800	LP15:	SKIPGE I,KDIR(MOVER)
02900		JRST LP13
03000		PUSHJ P,NOUT1
03010		MOVEI " "
03020		PUSHJ P,OCHR
03100	LP20:	SOJL K,LP14
03200		AOBJN MOVER,LP15
03300		HRLI MOVER,-100
03400		MOVEI 1,KDM2
03500		PUSHJ P,TXTOUT
03600		MOVEI K,7
03700	LP18:	SKIPGE I,KDIR(MOVER)
03800		JRST LP16
03900		PUSHJ P,NOUT1
03910		MOVEI " "
03920		PUSHJ P,OCHR
04000	LP21:	SOJL K,LP17
04100		AOBJN MOVER,LP18
04200		PUSHJ P,RELLPT
04300		JRST LP
04400	LP13:	MOVEI 1,NMS2
04500		PUSHJ P,TXTOUT
04600		JRST LP20
04700	LP14:	MOVEI 1,CMS
04800		PUSHJ P,TXTOUT
04900		MOVEI K,7
05000		JRST LP20+1
05100	LP16:	MOVEI 1,NMS2
05200		PUSHJ P,TXTOUT
05300		JRST LP21
05400	LP17:	MOVEI 1,CMS
05500		PUSHJ P,TXTOUT
05600		MOVEI K,7
05700		JRST LP21+1
05800	NMS2:	ASCIZ /-- /
05900	KDM1:	ASCIZ /
06000	WHITE KING
06100	/
06200	KDM2:	ASCIZ /
06300	BLACK KING
06400	/
     

00050	MOVEP:	PUSHJ P,GETLPT
00100		MOVEI 1,MOVMS
00200		PUSHJ P,TXTOUT
00300		HRLZI MOVER,-40
00400	LP11:	MOVE K,LM(MOVER)
00500		HLRZ 1,K
00510		LSH 1,3
00520		SKIPN 1
00530		MOVEI 1,-4
00532		MOVE KIND(MOVER)
00534		CAIN KNIGHT
00536		MOVEI 1,-10
00540		HRL K,1
00600		MOVEI B,12
00700		MOVEI 1,CMS
00800		PUSHJ P,TXTOUT
00900		HRRZ 2,MOVER
01000		PUSHJ P,PPRNT
01100		MOVEI 1,CMS
01200		PUSHJ P,TXTOUT
01300	LP10:	SKIPGE N,MOVE(K)
01400		JRST LP9
01500		PUSHJ P,DPR
01600		SOJL B,CR3
01700	LP9:	AOBJN K,LP10
01800		AOBJN MOVER,LP11
01900		MOVEI 1,CMS
02000		PUSHJ P,TXTOUT
02050		PUSHJ P,RELLPT
02100		JRST LP
02200	CR3:	MOVEI 1,CMS
02300		PUSHJ P,TXTOUT
02400		MOVEI B,12
02500		JRST LP9
02600	DPR:	MOVE I,N
02700		LSH I,-6
02800		PUSHJ P,NOUT1
02900		MOVEI "-"
03000		PUSHJ P,OCHR
03100		MOVE I,N
03200		ANDI I,77
03300		PUSHJ P,NOUT1
03400		MOVEI " "
03500		JRST OCHR
03600	MOVMS:	ASCIZ /
03700	MOVES
03800	/
     

00050	TIMEP:	PUSHJ P,GETLPT
00100		MOVEI 1,TM1
00200		PUSHJ P,TXTOUT
00300		MOVE I,CNTR
00400		PUSHJ P,NOUT2
00500		MOVEI 1,TM2
00600		PUSHJ P,TXTOUT
00700		MOVE I,TIMR
00800		PUSHJ P,NOUT2
00900		MOVEI 1,TM3
01000		PUSHJ P,TXTOUT
01100		MOVE I,TIMR
01200		IDIV I,CNTR
01300		PUSHJ P,NOUT2
01400		MOVEI 1,CMS
01500		PUSHJ P,TXTOUT
01550		PUSHJ P,RELLPT
01600		JRST LP
01700	TM1:	ASCIZ /
01800	NUMBER OF CALLS  /
01900	TM2:	ASCIZ /
02000	TOTAL TIME   /
02100	TM3:	ASCIZ /
02200	AVERAGE TIME   /
02300	NOUT2:	IDIVI I,12
02400		PUSH P,I+1
02500		SKIPE I
02600		PUSHJ P,NOUT2
02700		POP P,
02800		ADDI "0"
02900		JRST OCHR
03100	IBUF:	BLOCK 3
03200	READ:	PUSHJ P,GNCH
03300		CAIL "0"
03400		CAILE "9"
03500		JRST .-3
03600		MOVE 1,0
03700		SUBI 1,"0"
03800		LSH 1,3
03900		PUSHJ P,GNCH
04000		CAIL "0"
04100		CAILE "9"
04200		JRST .-3
04300		SUBI "0"
04400		ADD 1,0
04500		POPJ P,
     

00100	GETLPT:	INIT 1,0
00150		SIXBIT /LPT/
00200		XWD OBUF,0
00250		JRST GETLPT
00300		MOVE JOBFF
00350		MOVEM SVJOBF#
00400		OUTBUF 1,3
00450		OUTPUT 1,0
00500		POPJ P,
00550	RELLPT:	OUTPUT 1,0
00600		RELEAS 1,0
00650		MOVE SVJOBF
00700		MOVEM JOBFF
00750		POPJ P,
00800	EXTERNAL JOBFF
00850	OBUF:	BLOCK 3
00950	WHTDO:	TDZA 1,1
01000	BLKDO:	MOVEI 1,20
01050		MOVEM 1,COLOR#
01100		MOVEM 1,MCOL#
01150		MOVEI 1,-1
01200		MOVEM 1,ALPHA#
01250		MOVNI 1,-1
01300		MOVEM 1,BETA#
01350		MOVEI 1,MVTB+3777
01400		MOVEM 1,LLIM#
01500		MOVEM 1,ULIM#
01550		SETZM LEVEL#
01555		INIT 1,0
01560		SIXBIT /MTA0/
01565		XWD OBUF,0
01570		JRST .-3
01575		MOVE JOBFF
01580		MOVEM SVJOBF
01585		OUTBUF 1,3
01590		OUTPUT 1,0
01600		PUSHJ P,MKMOV
01650		MOVE T1,MTB+1
01700		MOVE DEST,T1
01750		ANDI DEST,77
01800		SKIPGE MOVER,OCC(DEST)
01850		JRST DO1
01900		PUSH P,T1
01950		MOVNI DEST,1
02000		PUSHJ P,PUTCH
02050		POP P,T1
02100	DO1:	MOVE DEST,T1
02150		ANDI DEST,77
02200		MOVE MOVER,T1
02250		LSH MOVER,-6
02260		ANDI MOVER,37
02300		PUSHJ P,PUTCH
02305		PUSHJ P,RELLPT
02350		JRST LP
02400	FIXIT:	HRLZI 1,NPPS
02500	FIX1:	HRRZ DEST,FTB(1)
02600		HLRZ MOVER,FTB(1)
02700		MOVEM 1,PIEC
02800		PUSHJ P,CALLER
02900		MOVE 1,PIEC
03000		AOBJN 1,FIX1
03100		JRST LP
03200	FTB:	BYTE (18) 0,5,4,6,3,32,10,11,11,21,12,30,13,27
03300		BYTE (18) 20,73,24,76,23,43,30,40,31,45,32,56,33,67
03400		BYTE (18) 34,61
03500	NPPS=-17
     

00100	DEFINE SDB (X,Y)
00200	<XWD Y*400,X*400+210>
00300	DEFINE CHR (A,B)
00400	<XWD A,202
00500	XWD B,2>
00600	DEFINE SC (X,A,B)
00700	<IRP X <PC'X: SDB 300,0
00800		CHR A,B>>
00900	DBUF:	Y=36*4
01000		REPEAT 10,<X=36*4
01100		REPEAT 31,<XWD Y*400,X*400+10
01200		X=X-12>
01300		REPEAT 2,<Y=Y-12
01400		X=36*4
01500		REPEAT 11,<XWD Y*400,X*400+10
01600		X=X-36>>
01700		Y=Y-12>
01800		X=36*4
01900		REPEAT 31,<XWD Y*400,X*400+10
02000		X=X-12>
02100		XWD 2,204
02200	PC0:	SDB 300,0
02300		CHR 360001,40074
02400	PC1:	SDB 300,0
02500		CHR 714001,1
02600	PC2:	SDB 300,0
02700		CHR 214021,243
02800	PC3:	SDB 300,0
02900		CHR 700021,360
03000	PC4:	SDB 300,0
03100		CHR 714001,163
03200	PC5:	SDB 300,0
03300		CHR 214021,243
03400	PC6:	SDB 300,0
03500		CHR 714001,1
03600	PC7:	SDB 300,00
03700		CHR 360001,40074
03900		SC (<10,11,12,13,14,15,16,17>,354021,273)
04100	PC20:	SDB 300,0
04200		CHR 360007,640074
04300	PC21:	SDB 300,0
04400		CHR 314525,117401
04500	PC22:	SDB 300,0
04600		CHR 214727,707243
04700	PC23:	SDB 300,0
04800		CHR 700327,603360
04900	PC24:	SDB 300,0
05000		CHR 714305,403163
05100	PC25:	SDB 300,0
05200		CHR 214727,707243
05300	PC26:	SDB 300,0
     

00100		CHR 314525,117401
00200	PC27:	SDB 300,0
00300		CHR 360007,640074
00500		SC (<30,31,32,33,34,35,36,37>,354023,400273)
00700	TBLG=.-DBUF
00800	COM:	XWD -TBLG,DBUF-1
00900		0
01000	PCTB:	X=PC0
01100		REPEAT 40,<EXP X
01200		X=X+3>
01250		0
01300	POSTB:	Y=36*4-3
01400		REPEAT 10,<X=-4*36+7
01500		REPEAT 10,<SDB X,Y
01600		X=X+36>
01700		Y=Y-36>
01800	OFBTB:	Y=36*4+200
01900		REPEAT 2,<X=-4*36+7
02000		REPEAT 10,<SDB X,Y
02100		X=X+36>
02200		Y=Y-36>
02300		Y=-4*36-200
02400		REPEAT 2,<X=-4*36+7
02500		REPEAT 10,<SDB X,Y
02600		X=X+36>
02700		Y=Y+36>
02800	END STPT